/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package feeds;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

public class RssReader { 

 /** 
  * Reads the RSS feed at the specified URL and returns an RssFeed instance 
  * representing it. 
  */ 
 public RssFeed read(String urlXML) { 
     RssFeed rssFeed=new RssFeed();
     try {
         
         URL url = new URL(urlXML);
         BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),"UTF-8"));
         String entrada;
         String cadena="";
         
         while ((entrada = br.readLine()) != null){
             cadena = cadena + entrada;
         }
         
         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
         DocumentBuilder db = dbf.newDocumentBuilder();
         
         InputSource archivo = new InputSource();
         archivo.setCharacterStream(new StringReader(cadena));
         
         Document documento = db.parse(archivo);
         documento.getDocumentElement().normalize();
         
         NodeList nodeLista = documento.getElementsByTagName("entry");
                  
         RssItem rssItem=new RssItem();
         
         for (int s = 0; s < nodeLista.getLength() && s<6; s++) {
             rssItem=new RssItem();             
             Node primerNodo = nodeLista.item(s);
             String titulo;
             String link;
             String fecha;
             Integer flag;
             
             if (primerNodo.getNodeType() == Node.ELEMENT_NODE) {
                 
                 Element primerElemento = (Element) primerNodo;
                 
                 NodeList primerNombreElementoLista = primerElemento.getElementsByTagName("title");
                 Element primerNombreElemento = (Element) primerNombreElementoLista.item(0);
                 NodeList primerNombre = primerNombreElemento.getChildNodes();
                 titulo = ((Node) primerNombre.item(0)).getNodeValue().toString();
                 
                 
                 NodeList segundoNombreElementoLista = primerElemento.getElementsByTagName("published");
                 Element segundoNombreElemento = (Element) segundoNombreElementoLista.item(0);
                 NodeList segundoNombre = segundoNombreElemento.getChildNodes(); 
                 
                 fecha = ((Node) segundoNombre.item(0)).getNodeValue().toString();
                 
                 
                
                 
                 NodeList tercerNombreElementoLista = primerElemento.getElementsByTagName("link");
                 Element tercerNombreElemento = (Element) tercerNombreElementoLista.item(0);        
                 link = tercerNombreElemento.getAttributes().getNamedItem("href").getNodeValue().toString();
                 
                 
                 
                 
               
                 
                 rssItem.setLink(link);
                 rssItem.setTitle(titulo);
                 rssItem.setFecha(fecha);
                 
                      
                 rssFeed.addItem(rssItem);
             }
             
         }
     } catch (Exception ex) {
         Logger.getLogger(RssReader.class.getName()).log(Level.SEVERE, null, ex);
     }
     
     
     
     
   return rssFeed;
 } 

}